package com.itjin.health.service;

import com.itjin.health.domain.dto.timeslot.AvailableSlotPublishRequest;
import com.itjin.health.domain.dto.timeslot.LocationAddRequest;
import com.itjin.health.domain.dto.timeslot.TimeSlotAddRequest;
import com.itjin.health.domain.entity.AvailableSlot;
import com.itjin.health.domain.entity.Location;
import com.itjin.health.domain.entity.TimeSlot;

import java.util.List;
import java.util.Map;

/**
 * 时间和地点管理服务接口
 */
public interface TimeAndLocationService {

  /**
   * 添加时间段
   */
  TimeSlot addTimeSlot(TimeSlotAddRequest timeSlotAddRequest);

  /**
   * 查询所有时间段
   */
  List<TimeSlot> listTimeSlots();

  /**
   * 添加地点
   */
  Location addLocation(LocationAddRequest locationAddRequest);

  /**
   * 查询所有地点
   */
  List<Location> listLocations();

  /**
   * 发布可用时间段和地点
   */
  void publishAvailableSlots(AvailableSlotPublishRequest publishRequest, Integer adminId);

  /**
   * 查询当前周和未来几周的可用时间段和地点
   * 返回的Map中，key为周标识（如"2023-W12"），value为该周的可用时间段列表
   */
  Map<String, List<AvailableSlot>> listAvailableSlots(String assessmentType, Integer futureWeeks);
}